package com.songlanyun.modules.opus.model.dto;

import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.core.type.TypeReference;
import com.songlanyun.common.drive.ValueObject;
import com.songlanyun.common.enums.GoodsConstant;
import com.songlanyun.common.enums.OpusConstant;
import com.songlanyun.common.exception.RRException;
import com.songlanyun.common.utils.custom.ClassConvertUtils;
import com.songlanyun.modules.opus.entity.OpusGoods;
import com.songlanyun.modules.opus.entity.OpusTheme;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Data
public class OpusDTO implements ValueObject {
    /**
     *
     */
    private Long id;
    /**
     * 作品标题
     */
    @Length(min = 1, max = 30, message = "标题长度在1-30个字")
    private String title;
    /**
     * 作品封面
     */
    @NotBlank(message = "作品封面不能为空")
    private String cover;
    /**
     * 主题id集合 = 话题
     */
    @TableField(exist = false)
    @Size(max = 2, message = "一次最多添加2个话题")
    private Long[] themeIds;
    /**
     * 关联商品id集合
     */
    @TableField(exist = false)
    @Size(max = 6, message = "一次最多添加6件商品")
    private Long[] goodsIds;
    /**
     * 发布会员id（平台发布这里是0 ）
     */
    private Long publisherId;
    /**
     * 作品类型（0图文，1视频）
     */
    @NotNull(message = "作品类型不能为空")
    private Integer opusType;
    /**
     * 审核说明
     */
    @Length(max = 200, message = "审核说明在200个字以内")
    private String auditRemark;
    /**
     * 作品审核状态（0待审核，1通过审核，2审核不通过）
     */
    private Integer opusStatus;
    /**
     * 管理员开通置顶
     */
    private Boolean openStick;
    /**
     * 作品内容
     */
    @NotBlank(message = "作品内容不能为空")
    private String content;
    /**
     * 当是图文作品时，记录多张图片，最多10张，以数组形式记录
     */
    private String images;
    /**
     * 视频地址
     */
    private String mediaAddress;
    /**
     * 文件大小
     */
    private Long mediaSize;
    /**
     * 播放时长（单位秒）
     */
    private Integer duration;

}
